package vs1;

import Bots.Bots;
import FALCON.FALCON;
import cz.cuni.amis.pogamut.base.utils.guice.AgentScoped;
import cz.cuni.amis.pogamut.ut2004.utils.UT2004BotRunner;
import cz.cuni.amis.utils.exception.PogamutException;

import java.util.Arrays;


@AgentScoped
public class wang_et_al2 extends wang_et_al {

    public static void main(String[] args) throws PogamutException {//在主程序内实体化对象所有进程共享，外界则各自子进程共享
        new UT2004BotRunner(wang_et_al2.class, "Hunter").setMain(true).setConsoleLogging(false).startAgents(agent_num);
    }


    @Override
    public void FALCONBOT(FALCON[] agent, Bots[] bots) {
        if (is_stop(bots[agt])) {              // 如果出现某些条件
            Learning(agent[agt], bots[agt]);        // 进行学习
            bots[agt].step++;                 // 智能体步骤数加一
            perf(agent[agt], bots[agt]);            // 利用网络选择动作
            agent[agt].I_Function(bots[agt].CurrentStat, bots[agt].vact);
        }
    }

    public boolean is_stop(Bots bots) { //核心每个时间步做的事（分线程）
        observe(bots);
        return !Arrays.equals(bots.stat, bots.CurrentStat);
        //Player enemy = players.getNearestVisiblePlayer(players.getVisibleEnemies().values());
        // if(enemy!=null && enemy.getName().toCharArray()[0]==this.info.getName().toCharArray()[0]) {enemy =null;}
        //bots.flag = enemy!=null || info.isShooting() || senses.isBeingDamaged() || !getNavigation().isNavigating();   // 如果 有敌人 或者 在射击 或者 被攻击 或者 不在导航
        //return bots.flag;
    }
}